Distributed computing is the use of computing resources (hardware and software) that are delivered as a service over a network (typically the Internet), often referred to as “cloud computing.” In a distributed computing environment, a customer pays a “cloud provider” to execute a program on computer hardware owned and/or controlled by the cloud provider. It is common for cloud providers to make virtual machines hosted on its computer hardware available to customers for this purpose. Virtual machines are software implementations of a physical device than can execute programs in a manner equivalent to the physical device.
The cloud provider typically provides an interface that a customer can use to manage virtual machines and associated resources such as processors, storage, and network services, etc. The interface also allows the customer to install and execute programs, and to request backups and restorations of virtual machines. It may be desirable to backup the data and state of the virtual machine; however, such backups can be time consuming. Additionally, restoring such a state backup can require the complete provisioning of the virtual machine state.